/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: 北京银杉金服科技有限公司
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2018/12/20 20:43
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.dubbo.io;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * IO服务端
 * @author zhangfb
 * @version 1.0.0.1
 * @since JDK 1.8
 */
public class IOServer {

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8088);

        // (1) 接收新连接线程
        new Thread(() -> {
            for (;;) {
                try {
                    // (2) 阻塞方法获取新的连接
                    Socket socket = serverSocket.accept();
                    System.out.println("======>"+socket.getInetAddress()+":"+socket.getPort());
                    // (3) 每一个新的连接都创建一个线程，负责读取数据
                    new Thread(() -> {
                        try {
                            int len;
                            byte[] data = new byte[1024];
                            InputStream inputStream = socket.getInputStream();
                            while ((len = inputStream.read(data)) != -1) {
                                System.out.println(new String(data, 0, len));
                            }
                            // (4) 按字节流方式读取数据
                        } catch (IOException e) {
                            System.out.println("(3)=======>出异常了："+e.getMessage());
                        }
                    }).start();
                } catch (Exception e) {
                    System.out.println("(1)=======>出异常了："+e.getMessage());
                }
            }
        }).start();
    }
}
